
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Informacion.Usuarios.DAO;

import Informacion.Usuarios.BEAN.UsuarioBEAN;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import javax.swing.JTextField;
import sape.Conexion;
import java.text.DateFormat;
/**
 *
 * @author melis_000
 */
public class UsuarioDAO {



    public static String agregarUsuario(UsuarioBEAN usuario) {
        
        Conexion db=new Conexion();
        db.estableceConexion();
        try {
            
            String strInsertVeh="";
            String strInserUsr="";
            String strSelectVeh="";
            Integer IdVehiculo=null;
            Statement s=db.conexion.createStatement();
            if (usuario.getTieneVehiculo()==1){//Indica que se registrará un vehículo
                 strInsertVeh="INSERT INTO \"public\".vehiculo (vehIdTipoVehiculo,vehModelo,vehMarca,vehPlaca,vehEstadoVehiculo)";
                 strInsertVeh+="VALUES ('"+usuario.getTipoVehiculo()+"','"+usuario.getModelo()+"', '"+usuario.getMarca()+"','"+usuario.getPlaca()+"','Activo')";
                 strSelectVeh="SELECT currval('vehiculo_vehIdVehiculo_seq')";
                 s.execute(strInsertVeh);
                 s.execute(strSelectVeh);
                 ResultSet rs = s.getResultSet();
                 rs.next();
                 IdVehiculo=rs.getInt(1);
            } 
            
            strInserUsr = "INSERT INTO \"public\".usuario (usrNombre,usrApellidoPaterno,usrApellidoMaterno,usrDNI,usrDireccion,usrEmail,usrTelefono,usrIdPerfil, usrNombreUsuario,usrContrasena,usrFechaCreacion,usrNumIntentosFallidos,usrIdVehiculo,usrEstadoSesion,usrEstadoUsuario)";
            strInserUsr+="VALUES ('"+usuario.getNombre()+"','"+usuario.getApellidoPaterno()+"', '"+usuario.getApellidoMaterno() +"','"+usuario.getDni() +"','"+usuario.getDireccion() +"','"+usuario.getMail() +"','"+usuario.getTelefono() +"','"+usuario.getIdPuesto()+"','"+usuario.getNombreUsuario() +"','"+usuario.getContrasena() +"','20/12/1990', 0,"+IdVehiculo+", 'Activo', 'Activo')";
            s.execute(strInserUsr);
        }catch (SQLException e){
            e.getMessage();
            db.cierraConexion();
            return "SQLERROR";
        }
    db.cierraConexion();
    return "OK";
    } 
    
    public static boolean validarString(JTextField tbNombre) {
       if (tbNombre.getText().trim().length() == 0) {
            System.out.println("ERROR:Nombre vacio.");
            //    JOptionPane.showConfirmDialog(this,"ERROR:Nombre vacio.");
            //  Otras acciones de validacion.
            return false;
        }
        System.out.println("A.");
        return true;
    }

    public static boolean validarMail(JTextField tbMail) {
            if (tbMail.getText().trim().length() == 0) {
            System.out.println("ERROR:Nombre vacio.");
            //    JOptionPane.showConfirmDialog(this,"ERROR:Nombre vacio.");
            //  Otras acciones de validacion.
            return false;
        }
        System.out.println("A.");
        return true;
    }

    public static boolean validarDNI(JTextField tbDni) {
            if (tbDni.getText().trim().length() == 0) {
            System.out.println("ERROR:Nombre vacio.");
            //    JOptionPane.showConfirmDialog(this,"ERROR:Nombre vacio.");
            //  Otras acciones de validacion.
            return false;
        }
        System.out.println("A.");
        return true;
    }

    public static boolean validarTelefono(JTextField tbTelefono) {
               if (tbTelefono.getText().trim().length() == 0) {
            System.out.println("ERROR:Nombre vacio.");
            //    JOptionPane.showConfirmDialog(this,"ERROR:Nombre vacio.");
            //  Otras acciones de validacion.
            return false;
        }
        System.out.println("A.");
        return true;
    }

    public static String modificarUsuario(UsuarioBEAN usuario) {
               Conexion db=new Conexion();
    db.estableceConexion();
    try {
        Statement s=db.conexion.createStatement();
    String insert = "UPDATE \"public\".usuario SET";
    insert+=" usrNombre = '"+ usuario.getNombre()+"' ,";
    insert+=" usrApellidoPaterno= '"+usuario.getApellidoPaterno()+"' ,";
    insert+=" usrApellidoMaterno = '"+usuario.getApellidoMaterno()+"', ";
    insert+=" usrDireccion = '"+ usuario.getDireccion()+"' ,";
    insert+=" usrEmail = '"+usuario.getMail()+"' ,";
    insert+=" usrTelefono = '"+usuario.getTelefono()+"' ";
    insert+=" WHERE usridusuario = "+ usuario.getId()  +";";
    s.execute(insert);
    }catch (SQLException e){
        db.cierraConexion();
        return "SQLERROR";
    }
    db.cierraConexion();
    return "OK";
        
        
    }
    public static String leerUsuario(UsuarioBEAN usuario){        
        String resultado="";
        Conexion db=new Conexion();
        db.estableceConexion();
        try{
            String strSelectUsuario="";

            Statement s=db.conexion.createStatement();
            strSelectUsuario= "select * from \"public\".usuario where usrnombreusuario = '"+ usuario.getNombreUsuario() + "' and usrcontrasena= '" + usuario.getContrasena() +"';";
            s.executeQuery(strSelectUsuario);
            ResultSet rs=s.getResultSet();
            if (rs.next()==true){
                resultado="OK";
            }
                    
        }catch(SQLException e){
            e.getMessage();
            db.cierraConexion();
            return "SQLERROR";            
        }
        db.cierraConexion();
        return resultado;
    }
    public static ArrayList<UsuarioBEAN> getListaUsuarios() {
    
    ArrayList<UsuarioBEAN>lista=new ArrayList<UsuarioBEAN>();
    Conexion db=new Conexion();
    db.estableceConexion();
    try {
    Statement s=db.conexion.createStatement();
    String query = "select * from usuario where usrEstadoUsuario='Activo'  ;";
    s.execute(query);
    ResultSet rs = s.getResultSet();
    while((rs!=null) && (rs.next()))
    {
        UsuarioBEAN usuario=new UsuarioBEAN(rs.getString(2), rs.getString(3), rs.getString(4),rs.getString(5),rs.getString(6),rs.getString(7),rs.getString(8),rs.getString(9),rs.getString(10),rs.getInt(11),rs.getDate(12),rs.getInt(13),rs.getInt(14),rs.getString(15),rs.getString(16));
        usuario.setId(rs.getInt(1));
        
        lista.add(usuario);
        
    }
    }catch (SQLException e){
        db.cierraConexion();
        return null;
        
    }
    db.cierraConexion();
    return lista;
    }

    public static UsuarioBEAN getUsuario(int id) {
        ArrayList<UsuarioBEAN>lista=new ArrayList<UsuarioBEAN>();
        Conexion db=new Conexion();
        db.estableceConexion();
    try {
        Statement s=db.conexion.createStatement();
        
    String query = "select * from \"public\".usuario where usrestadousuario='Activo' AND usridusuario="+id + " ;";
    s.execute(query);
    ResultSet rs = s.getResultSet();
    
    if( (rs!=null) && (rs.next()) ){
        UsuarioBEAN usuario=new UsuarioBEAN(rs.getString(2), rs.getString(3), rs.getString(4),rs.getString(5),rs.getString(6),rs.getString(7),rs.getString(8),rs.getString(9),rs.getString(10),rs.getInt(11),rs.getDate(12),rs.getInt(13),rs.getInt(14),rs.getString(15),rs.getString(16));
        usuario.setId(rs.getInt(1));
        usuario.setEstado(rs.getString(15));
        db.cierraConexion();
        return usuario;
    }
        db.cierraConexion();
        return null;
   
    }catch (SQLException e){
        db.cierraConexion();
        return null;
    }

    }
    public static UsuarioBEAN getUsuario(String userName,String password){
        Conexion db=new Conexion();
        db.estableceConexion();
        try{
            String strSelectUsuario="";

            Statement s=db.conexion.createStatement();
            strSelectUsuario= "select * from \"public\".usuario where usrnombreusuario = '"+ userName + "' and usrcontrasena= '" + password +"';";
            s.executeQuery(strSelectUsuario);
            ResultSet rs=s.getResultSet();
        if( (rs!=null) && (rs.next()) ){
            UsuarioBEAN usuario=new UsuarioBEAN(rs.getString(2), rs.getString(3), rs.getString(4),rs.getString(5),rs.getString(6),rs.getString(7),rs.getString(8),rs.getString(9),rs.getString(10),rs.getInt(11),rs.getDate(12),rs.getInt(13),rs.getInt(14),rs.getString(15),rs.getString(16));
            usuario.setId(rs.getInt(1));
            usuario.setEstado(rs.getString(15));
            db.cierraConexion();
            return usuario;
        }
            db.cierraConexion();
            return null;

        }catch (SQLException e){
            db.cierraConexion();
            return null;
        }
    }

    public static Object eliminarUsuario(Integer id) {
    Conexion db=new Conexion();
    db.estableceConexion();
    try {
        Statement s=db.conexion.createStatement();
    String insert = "UPDATE \"public\".usuario SET \"usrestadousuario\" = 'Inactivo' WHERE usridusuario = "+ id+";";
    s.execute(insert);
    }catch (SQLException e){
        db.cierraConexion();
        return "SQLERROR";
    }
    db.cierraConexion();
    return "OK";
    }

    
}
